package site.hanzhe.utils;

import lombok.Data;

import java.util.HashMap;
import java.util.Map;

/**
 * 通用响应模板
 */
@Data
public class R {

    // 状态码约定100为成功，200为逻辑错误，其他状态码为自定义错误
    private int code;    // 响应状态码
    private String msg;  // 响应消息
    private Map<String, Object> data;  // 响应携带数据

    // 私有化构造方法，不让外界直接new对象
    private R() {}

    // 成功的模板
    public static R success(String msg){
        R r = new R();
        r.setCode(100);
        r.setMsg(msg);
        return r;
    }

    // 失败的模板
    public static R error(String msg){
        R r = new R();
        r.setCode(200);
        r.setMsg(msg);
        return r;
    }

    // 失败模板的：自定义约定状态码
    public static R error(int code, String msg){
        R r = new R();
        r.setCode(code);
        r.setMsg(msg);
        return r;
    }

    // 响应的时候添加响应参数
    public R setAttribute( String key, Object val ){
        if ( this.data == null)
            this.data = new HashMap<>();
        this.data.put(key, val);
        return this;
    }

}
